使用getline从文件读取时的垃圾值
Garbage value on reading from a file using getline
我正在编写一个小程序,只需从一个特定格式的srt文件中获取行。然而,在使用getline进行的第一次(也是唯一一次)读取中,我得到了一个垃圾值。有人能指出我为什么会有这种不正常的行为吗?
//Small program to get the text from the srt files.
#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
#include<vector>
#include<sstream>
#include<conio.h>
using namespace std;
void srtToTranscript(ifstream* iFile, ofstream *oFile);
int main(){
std::string file_name;
std::string transcript;
cout << "Enter srt file name (without extension)";
cin >> file_name;
ifstream iFile;
ofstream oFile;
iFile.clear();
iFile.open("data\" + file_name+".srt");
oFile.open("data\" + file_name + "_result.txt");
srtToTranscript(&iFile,&oFile);
cout << "Conversion done. Check in the same folder";
cout << "Press a key to exit... ";
while (!_kbhit());
char dummy = _getch();
return 0;
}
void srtToTranscript(ifstream* iFile, ofstream* oFile)
{
int i = 1;
std:string line;
for (; getline(*iFile, line);)
{
cout << line << endl;
cout << to_string(i) << endl;
if (line.compare(to_string(i)) == 0){
getline(*iFile, line);
i++;
continue;
}
*oFile << line + ",n";
}
oFile->close();
}
附件是我正在阅读的文件示例:
1
00:00:000000-->00:00:12000
翻译:Thu Huong Ha
2
00:00:12038-->00:00:15012
在过去的二十年里,印度已经成为
问题是您的ifile
没有成功打开。
我在您的包含列表中看到#include <conio.h>
,所以我认为您正在使用Visual Studio?如果您在设置Visual Studio时使用了默认的目录结构,那么假设您有一个名为"Foo"的项目。您的.srt文件需要转到此处:
/文档/View Studio 20##/项目/Foo/Foo/data/Foo.srt
当我正确地将文件放在那里,并在提示下输入:
Foo
我在以下文件中得到了这个输出:"…/Documents/VisionStudio20#/Projects/Foo/Foo/data/Foo_result.txt":
00:00:000000-->00:00:12000,
,
翻译:Thu Huong Ha,
,
00:00:12038-->00:00:15012,
,
在过去的二十年里,印度已经成为
我要确保的一件事是,您在srtToTranscript
中的line
声明是定义的:
string line
不是:
std:string line
相关文章:
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 为什么 getline() 不读取文本文件中的所有内容?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 当 getline 直到新行才读取时会发生什么?
- Getline在读取文本文件时有一种奇怪的行为
- 使用getline读取.csv文件时出现问题
- 如何在不循环的情况下使用getline读取文件
- 使用std::getline()读取一行
- C++ : 如何在使用 getline() 和 ifstream 对象从文件中读取一行时跳过第一个空格?
- 无法使用 getline() 输入字符串.它只读取一个字符串
- 从 txt 文件中读取数据的 Getline
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- std::getline 读取最后一个字符串两次
- 使用 c++ 中的 getline 函数连续读取两行
- 使用 getline 读取字符串,但每行中都有换行符
- 为什么我的getline不正确读取.csv文件
- C 使用getline()内部循环以在CSV文件中读取
- 使用 getline 从输入文件读取一行到输出文件
- 使用 getline 从文件中读取多行
- 使用 getline 和 FILE 而不是 ifstream 的 c++ 读取文件