Моя программа cpp делает что-то странное с областью обзора, когда я использую его строковые потоки. Когда я помещаю инициализацию строк и строковых потоков в том же блоке, что и там, где я его использую, проблем нет. Но если поместить его один блок выше, выход оленья кожа строки строка потока правильностранная область видимости в cpp
правильное поведение, программа печатает каждый маркер, разделенных пробелами:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
while (true){
//SAME BLOCK
stringstream line;
string commentOrLine;
string almostToken;
getline(cin,commentOrLine);
if (!cin.good()) {
break;
}
line << commentOrLine;
do{
line >> almostToken;
cout << almostToken << " ";
} while (line);
cout << endl;
}
return 0;
}
Неправильное поведение, программа печатает только первый inputline:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
//DIFFERENT BLOCK
stringstream line;
string commentOrLine;
string almostToken;
while (true){
getline(cin,commentOrLine);
if (!cin.good()) {
break;
}
line << commentOrLine;
do{
line >> almostToken;
cout << almostToken << " ";
} while (line);
cout << endl;
}
return 0;
}
Почему это происходит?
Это может быть проблема с промывкой? – Nick