好的,自从我完成任何文件输入或字符串操作以来已经有一段时间了,但我正在尝试做的事情如下
while(infile >> word) {
for(int i = 0; i < word.length(); i++) {
if(word[i] == '\n') {
cout << "Found a new line" << endl;
lineNumber++;
}
if(!isalpha(word[i])) {
word.erase(i);
}
if(islower(word[i]))
word[i] = toupper(word[i]);
}
}
现在我认为这不起作用因为&gt;&gt;跳过新行字符?如果是这样,最好的方法是做什么。
答案 0 :(得分:9)
我猜我word
是std::string
。使用>>
时,第一个空白字符将终止“单词”,下一次调用将跳过空格,因此word
中不会出现空格。
你没有说你实际想要做什么但是对于基于行的输入你应该考虑使用自由函数std::getline
,然后将每一行分成单词作为单独的步骤。
E.g。
std::string line;
while( std::getline( std::cin, line ) )
{
// parse line
}
答案 1 :(得分:2)
有getline功能。
答案 2 :(得分:1)
如何使用getline()
?
string line;
while(getline(infile, line))
{
//Parse each line into individual words and do whatever you're going to do with them.
}