在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
。希望有人能告诉我如何做到这一点。
答案 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
添加到您的信息流中。