Этот код похож на то, что вы написали:
while(getline(file,line))
{
string firstPart = "";
unsigned int i;
//We can use the algorithm library to search for them but its ok
for(i=0;(line[i] != '+') || (line[i] != '-') || (line[i] != '*') || (line[i] != '/') || (line[i] != '\0');i++ );
firstPart = line.substr(0,i);
}
Теперь, если вы попробовали это, это вызовет ту же ошибку (или, по крайней мере, похожую на нее), если мы даже попытаемся напечатать каждый символ в l oop
for(/*stuff*/)
cout << line[i];
Затем обратите внимание, что это станет бесконечным l oop, проблема в том, что вы проверяете строку символов [i], если она не была + или - или * или / все одновременно, исправьте это, изменив || к &&. Я предполагаю, что ваш файл (с именем testfile.txt) имеет содержимое ниже:
0xAB+0xCD
0x11-0x03
Пример рабочего кода:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream file("testfile.txt");
///Don't forget to check if file has opened
if(!file.is_open())
{
cout << "File didn\'t open :(";
return 0;
}
string line;
while(getline(file,line))
{
string firstPart = "",secondPart = "";
char operation;
unsigned int i;
//We can use the algorithm library to search for them but its ok
for(i=0;(line[i] != '+') && (line[i] != '-') && (line[i] != '*') && (line[i] != '/') && (line[i] != '\0');i++ );
firstPart = line.substr(0,i);
operation = line[i];
secondPart = line.substr(i+1,firstPart.size());
}
file.close();
return 0;
}