Это целая программа, и она отлично работает:
#include <iostream>
#include <fstream>
int main()
{
std::ifstream netlist("netlist.txt");
if (!netlist.is_open())
{
std::cerr << "Failed to open netlist.txt." << std::endl;
}
std::string componentName;
int node1 = 0;
int node2 = 0;
double value = 0.0;
while (netlist.good())
{
netlist >> componentName >> node1 >> node2 >> value;
std::cout << "Component name: " << componentName << std::endl;
std::cout << "Node1: " << node1 << std::endl;
std::cout << "Node2: " << node2 << std::endl;
std::cout << "Value: " << value << std::endl;
}
return 0;
}
Если вы читаете из файла, вы можете прочитать файл напрямую. Вам не нужно читать строку, а затем попытаться прочитать это.
То, что вы пропустили:
- открытие файла:
std::ifstream netlist("netlist.txt");
- проверка, действительно ли файл открыт:
!netlist.is_open()
- просто чтение из потока:
netlist >> componentName >> node1 >> node2 >> value;
Примечание: это также должно работать только с ss
, как только вы инициализировали его строкой: std::stringstream ss(line);
Существует одно предупреждение: при чтении std :: string из поток, вы всегда будете читать одно слово. Это работает в вашем случае, но вы должны помнить об этом.