//Variables
char END_OF_FILE = '#';
char singleCharacter;
//Get a character from the input file
inFile.get(singleCharacter);
//Read the file until it reaches #
//When read pointer reads the # it will exit loop
//This requires that you have a # sign as last character in your text file
while (singleCharacter != END_OF_FILE)
{
cout << singleCharacter;
inFile.get(singleCharacter);
}
//If you need to store each character, declare a variable and store it
//in the while loop.
#include <stdio.h>
int
main() // (void) not necessary in C++
{
int c;
while ((c = getchar()) != EOF) {
// do something with 'c' here
}
return 0; // technically not necessary in C++ but still good style
}
8条答案
按热度按时间ou6hu8tu1#
您可以尝试以下操作:
nmpmafwu2#
@cnicutar和@Pete Becker已经指出了使用
noskipws
/unsettingskipws
一次读取一个字符而不跳过输入中白色字符的可能性。另一种可能性是使用
istreambuf_iterator
来读取数据,除此之外,我通常使用像std::transform
这样的标准算法来进行阅读和处理。举个例子,假设我们想做一个类似凯撒的密码,从标准输入复制到标准输出,但是给每个大写字符加3,所以
A
会变成D
,B
会变成E
,等等(最后,它会绕回,所以XYZ
会转换成ABC
。如果我们要在C语言中这样做,我们通常会使用一个循环,类似于:
要在C++中做同样的事情,我可能会更像这样编写代码:
通过这种方式,您可以接收到连续字符作为传递给(在本例中)lambda函数的参数值(尽管如果愿意,您可以使用显式函子代替lambda)。
goucqfw63#
引用Bjarne Stroustrup的话:“〉〉操作符用于格式化输入;也就是说,阅读预期类型和格式的对象。2如果不希望这样做,而我们希望将字符作为字符读取,然后检查它们,则使用get()函数。
6g8kf2rb4#
这是一个c++风格的函数,你可以用它逐个字符地读取文件。
xzlaal3s5#
x6492ojm6#
回复:
textFile.getch()
,这是你编的吗?还是你有一个参考文献说它应该能用?如果是后者,就去掉它。如果是前者,就不要这样做。找一个好的参考文献。nr7wwzry7#
假设
temp
是一个char
,textFile
是一个std::fstream
的导数......您要查找的语法是
uklbhaso8#
在C++中没有理由不使用C
<stdio.h>
,事实上它往往是最佳选择。