如何在c ++中从文本文件中读取空格字符

时间:2013-09-18 10:39:20

标签: c++

在c ++中,ascii字符具有默认值。喜欢 !值为33,“,”的值也为44,依此类推。

在我的文本文件“hehe.txt”中。 ;!,.

#include <iostream>
#include <fstream>

int main() {
    std::ifstream file("hehe.txt");
    if(file.eof()) 
        return 0;
    char ascii;

    while(file>>ascii) {
        std::cout << (int)ascii << " ";
    }
    system("pause");
} 

输出为59 33 44 46

编辑:当我运行程序时,如何防止空格被忽略为从文本文件中读取?假设我在最后一个字符;!,.之后添加了空格,因此输出必须是59 33 44 46 32。希望有人能告诉我如何做到这一点。

2 个答案:

答案 0 :(得分:5)

问题是分隔符。使用file >> ascii时,这将“吃掉”所有空格,因为它们被用作分隔符。

您可以使用getline然后迭代字符串中的所有字符。

std::ifstream file("../../temp.txt");
if(!file)return 0;
std::string line;

while (std::getline(file, line, '\0')){
    for(char ascii : line){
        std::cout<<(int)ascii << " ";
    }
}
system("pause");
return 0;

正如dornhege所说,还有可能是:

  while(file >> std::noskipws >> ascii){
    std::cout << (int) ascii << "\n";
  }

答案 1 :(得分:2)

默认情况下,istream对象将跳过空格作为“”(32)。尝试在阅读之前将>> std::noskipws添加到您的信息流中。