c++ - 为什么执行时会跳过前 2 个字符?C++
问题描述
while(!Info.eof()) {
std::getline(Info, line,'\r');
char a[line.length()];
char things[]= ":.\n\0";
for(int i=0;i<sizeof(a); i++) {
a[i]= line[i];
}
ptr = strtok(a, things);
ptr = strtok(nullptr,things);
while (ptr!= nullptr) {
ptr = strtok(nullptr,things);
std::cout << ptr << std::endl;
}
Info 是ifstream
输入文件。线是一个字符串。当我cout << line
显示一切都没有问题时,问题是我需要带走除了所需的字符串和 int 之外的所有东西,我已经完成了但前两行没有显示。当我第一次执行它时,它显示了所有内容,昨天它跳过了第一行,今天跳过了前两行。我想这与记忆或看不见的东西有关,我需要帮助,谢谢。
解决方案
你缺少的一件事——C 风格的字符串以零结尾。你不这样做。
其次,您在 while 循环之前做了两次 strtoks,这就是为什么您会丢失一些东西。
推荐阅读
- java - 如何在 Java 中规范化 IPv6 地址?
- python - 使用 Pandas 的函数计算其他两个列
- api - 托管在 localhost 上的 ionic 请求 api 中的 CORS 问题
- powershell - 如何输入字符串列表作为参数?
- python-3.x - 将 Hive SQL 中的 CASE 转换为 Python 3.6 IF else 语句
- asp.net-mvc - 在 Visual Studio 2015 中添加视图时发生错误
- java - Bukkit / Spigotplugin - 从配置中删除条目
- javascript - javascript - Python 的单行列表理解代码的 javascript 版本
- redis - 我如何以扭曲的工厂方法访问redis?
- php - 使用 jquery 动态创建的内容是否对搜索引擎可见?