d***a 发帖数: 316 | 1 declare 一个 C++ string class object,
然后用 .c_str() 将其转换成一个 c string
再用 strcat() 加上一个后缀。
strcat(userinput, "_data_extracted.txt")
这个最后得到的 c string 有时会在原string和新加的后缀之间又加了一些东西,比如
%B 或者 %FF%FF。有时又不出现。请教为什么,如何处理?多谢。 |
z*****n 发帖数: 7639 | 2 userinput的size是多少?
【在 d***a 的大作中提到】 : declare 一个 C++ string class object, : 然后用 .c_str() 将其转换成一个 c string : 再用 strcat() 加上一个后缀。 : strcat(userinput, "_data_extracted.txt") : 这个最后得到的 c string 有时会在原string和新加的后缀之间又加了一些东西,比如 : %B 或者 %FF%FF。有时又不出现。请教为什么,如何处理?多谢。
|
h********8 发帖数: 7355 | 3 别用长度,用printf应该看不到吧。
【在 d***a 的大作中提到】 : declare 一个 C++ string class object, : 然后用 .c_str() 将其转换成一个 c string : 再用 strcat() 加上一个后缀。 : strcat(userinput, "_data_extracted.txt") : 这个最后得到的 c string 有时会在原string和新加的后缀之间又加了一些东西,比如 : %B 或者 %FF%FF。有时又不出现。请教为什么,如何处理?多谢。
|
Q**a 发帖数: 406 | 4 贴完整代码,这样说不清楚。看你的意思userinput就是.c_str()转换出来的const
char*,但strcat的第一个参数应该是char*,你中间干啥了?
以及,你要干的这件事情直接让那个string += "..."就行 |
d***a 发帖数: 316 | 5 想法是用户输入一个文件名,例如 someresults.txt
然后用ifstream读入,处理后,用ofstream保存为 someresults_data_extracted.txt
用户输入的文件后缀要去掉。
以下是产生问题的部分code,其它省略。
整个程序g++编译通过的。
#include
#include
#include
#include
cout << "Enter the file to work on: ";
string originName;
getline(cin, originName);
// code for ifstream to read a file
…..
char * tempOut = new char [originName.size()+16];
strncpy(tempOut, originName.c_str(), originName.size()-4);
ofstream fout;
fout.open( strcat(tempOut, "_data_extracted.txt") );
【在 Q**a 的大作中提到】 : 贴完整代码,这样说不清楚。看你的意思userinput就是.c_str()转换出来的const : char*,但strcat的第一个参数应该是char*,你中间干啥了? : 以及,你要干的这件事情直接让那个string += "..."就行
|
c****p 发帖数: 6474 | 6 你这么做就麻烦了。。
拿到OriginalName之后:
string tempOut = OriginalName + ".......txt";
fout = fopen(tempOut.c_str(),"wt");
...
而且输入文件名其实可以这样。。。
int main(int argc, char* argv[])
{
string OriginName(argv[1]);
...
}
这么做的好处是可以直接在命令行就指令输入文件,
再写个脚本做批处理之类的很方便,
省得每运行一次程序你都得手动输入文件名。
写得再复杂点都可以弄成支持通配符的。【 在 dunfa (蹲着发财) 的大作中提到: 】
txt |
Q**a 发帖数: 406 | 7 strncpy之后要给tempOut加一个\0截断
以及用string的substr和+=多简洁
txt
【在 d***a 的大作中提到】 : 想法是用户输入一个文件名,例如 someresults.txt : 然后用ifstream读入,处理后,用ofstream保存为 someresults_data_extracted.txt : 用户输入的文件后缀要去掉。 : 以下是产生问题的部分code,其它省略。 : 整个程序g++编译通过的。 : : #include : #include : #include : #include
|
d***a 发帖数: 316 | 8 谢谢。
正在学习 STL,还不熟悉。
【在 Q**a 的大作中提到】 : strncpy之后要给tempOut加一个\0截断 : 以及用string的substr和+=多简洁 : : txt
|