c ++字符串和文件输入

时间:2010-05-03 20:39:00

标签: c++ input

好的,自从我完成任何文件输入或字符串操作以来已经有一段时间了,但我正在尝试做的事情如下

   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;跳过新行字符?如果是这样,最好的方法是做什么。

3 个答案:

答案 0 :(得分:9)

我猜我wordstd::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.
}