使用C ++中的char读取文件I / O的文件

时间:2016-06-02 14:51:59

标签: c++ arrays

请帮忙!每当它输出数组时,它就会打印出垃圾:(我的代码的目的是让它通过一个长文本文件,它有一个转换,就像这样。

catch

并且要把它分解为像这样的格式:

2016-20-5: Bob: "Whats up!"
2016-20-5: Jerome: "Nothing bro!" 

(BTW有一个名为Person's Name: Bob Message Sent: Whats up! Date: 2016-20-5 的文件,如果我使用"char.txt"它可以使用,但我无法使用string因为某些功能只接受string) 这是我到目前为止所做的,仍然试图打印出来:

char*

2 个答案:

答案 0 :(得分:2)

  1. 您可以通过str.c_str() http://www.cplusplus.com/reference/string/string/c_str/将字符串转换为字符数组/指针 您可以将其结合到:

    std::string linestr;
    std::getline ( readchat,linestr);
    char * line = linestr.c_str()`
    
  2. 替代方案:使用readchat.read() http://www.cplusplus.com/reference/istream/istream/read/

  3. 直接阅读数组

答案 1 :(得分:1)

回答,感谢Loki Astari! 新代码:

#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::ifstream readchat("chat.txt");
    std::string line;
    while (std::getline(readchat, line, ':'))
    {
        std::cout << line << std::endl;
    }
}

说明:使用字符串而不是char,因为它更整洁,总体上更好。要将文件读入我的字符串,我使用std::getline(readchat, line, ':'),它还负责切割:中的字符串。然后,由于readchat被读入了行,我打印出行并添加了一个endl,每次剪切字符串时都会生成一个新行。