gpt4 book ai didi

C++ - if 语句仅适用于 while 循环的一次迭代

转载 作者:行者123 更新时间:2023-11-28 05:49:33 29 4
gpt4 key购买 nike

我有一个 .txt 文件:

Fruit name:
"Banana - yellow"
"Apple - red"
"Grape - purple"

我正在尝试提取每一行,并使以 " 开头的任何行都输出该行中的第一个单词。

我目前的代码设置如下:

char text_line[1000];
while(cin.good()){
std::cin.getline(text_line,1000);
if(text_line[0] == '"')
{
string instr(text_line);

std::string tok;

std::stringstream ss(instr);

while(std::getline(ss, tok, ' '))
{
cout<<"This is the first word: "<<tok<<endl;
}

}
}

我的问题是输出的唯一单词是 “Banana”,这表明我的 while 循环中的 if 语句只针对那一行执行。有什么办法可以克服这个问题吗?提前致谢!

最佳答案

我会反转逻辑:读取第一个单词并检查它是否以引号开头,然后转储该行的其余部分:

std::string word;
while (std::cin >> word) {
if (word[0] = '"')
std::cout << "This is the first word: " << word.substr(1) << '\n';
getline(cin, word); // read the rest of the line;
// extractor at top of loop will discard it
}

关于C++ - if 语句仅适用于 while 循环的一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542110/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com