2011-02-28 58 views
0

我有一个包含此行一个文本文件:如何修改文本在一个文本文件

C:\Program Files\app\ 

我想读它成为这样的:

C:\\Program Files\\app\\ 

我知道如何读文件在visual C++中,但是如何在每次创建斜线时添加一个斜线()。

char str[200]; 
    fstream file_op("C:\\path.txt",ios::in); 
    file_op >> str; 
    file_op.close(); 

回答

1

要做到这一点,最简单的方法是通过循环:

char newPath[MAX_PATH]; 
int newCount = 0; 
for(int i=0; i < strlen(str); i++) 
{ 

    if(str[i] == '\') 
    { 
     newPath[newCount++] = str[i]; 
    } 
    newPath[newCount++] = str[i]; 
} 

请注意,您不能更改文件。您将不得不将新字符串写入新文件。我没有使用boost或任何其他库,因为这些不是默认的VisualC++的一部分,你的标签说你需要这个用于VisualC++

-1

在VB中,你可以使用String.Split()与他人代替某些字符,你可能会想尝试这样或谷歌使用“正则表达式”的(不知道propper皆可使用,但现在我知道它旨在取代和编辑字符串)

+0

我们正在谈论C++ ... – CharlesB 2011-02-28 11:04:00

+0

是的,在VS你有一切都很好。在每种语言中都有.NET特性......比如字符串函数,正则表达式等......即使它没有直接实现,你也可以在googleing“regex C++”中找到它,第一个链接是“http: //www.drdobbs.com/cpp/184404797“......对不起,如果这听起来像曳,但我在这里完全白痴包围!?在另一个问题上与一些混蛋进行了类似的讨论...... – Husky110 2011-02-28 14:58:43

2

使用boost:

#include <boost/algorithm/string/replace.hpp> 
#include <fstream> 
using namespace std; 
int main(int argc, char const* argv[]) { 
    string line; 
    ifstream file_op("D:\\path.txt"); 
    ofstream file_out("D:\\out.txt"); 
    while(getline(file_op, line)) { 
    boost::replace_all(line, "\\", "\\\\"); 
    file_out << line << '\n'; 
    } 
    // file_op and file_out are closed on exit 
    return 0; 
}