strtok输入文件行最后一个元素的奇怪行为
C++: strtok strange behaviour in last element of the line of input file?
我正在逐行读取一个文件(如下所示的示例),对于每一行,我使用strtok来获取由制表符分隔的元素(如代码所示)。现在,当我用数据创建文件时,我这样做:键入"A",键入tab,键入"10",按enter,等等。在这种情况下,当打印数字时,后面跟着奇怪的字符,有时是字母/数字。这个问题的"补丁"是按以下方式输入数据:输入"A",按tab,输入"10",按tab。有人能向我解释一下为什么会发生这种情况,有没有更好的方法来解决它?
sample.txt
A 10
B 20
C 30
//str contains a line of the file
char * pch = strtok (str,"t");
//print character
if(pch !=NULL){
cout<<pch<<endl;
}
//print number
pch = strtok (NULL, "t");
if(pch !=NULL){
cout<<pch<<endl;
}
我不知道问题的原因是什么,但我通过在从文件中读取的每行末尾添加一个制表符("t")字符来"修复"它。
相关文章:
- lower_bound()返回最后一个元素
- 获取向量C++中第一个值和最后一个值的和
- 获取用C/C++打印的最后一个字符串
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么我的最后一个 ELSE 条件无法正确执行
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 丢失读入的每一行输入中的最后一个令牌
- 输入文件中的第一个字符是输出文件中的最后一个字符,反之亦然
- 如何知道您输入到std::array中的最后一个元素是什么?
- 如何获取输入文件的行的第二个和最后一个字符,并在C++中组成数组
- 正在擦除文件中的最后一个输入
- c ++ 如何阻止我的循环两次吐出最后一个输入
- 为什么 ifstream 返回输入文件的最后一个值两次
- 尝试从输入文件打印,但打印最后一个输入两次
- 你如何知道输入流何时到达一行中的最后一个单词
- C++:为什么 getline() 不打印输入字符串的最后一个单词?
- 是否有办法找出哪个线程接收了最后一个输入
- c++程序只列出输入数组的最后一个值
- strtok输入文件行最后一个元素的奇怪行为