由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 改变 c string 的一个问题
相关主题
[转载] Scheme 编程问题求教怎么找这个函数的源代码?
这个属于哪个领域[转载] LISP问题求教
请教c++一个程序bug,谢谢前辈们怎样把C文件编译成.x86后缀的目标代码? 怎样运行这种代码? (转载)
c++ type conversion 方面的问题Entity Extraction一般是用什么算法来实现呀?
C++牛人能不能现身解答小妹一个问题啊?标题要长长长长长~~~~~~~~~~~~~~~~~~请推荐本 Data Analysis 的书
20个包子,求解c++基础问题问下关于做term ambiguity的reference
C++ 初级再初级问题 (转载)大家的.bib文件是怎么创建的?
Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)Post-doctoral Positions in Information Extraction
相关话题的讨论汇总
话题: string话题: strcat话题: tempout话题: txt话题: userinput
进入CS版参与讨论
1 (共1页)
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

1 (共1页)
进入CS版参与讨论
相关主题
Post-doctoral Positions in Information ExtractionC++牛人能不能现身解答小妹一个问题啊?标题要长长长长长~~~~~~~~~~~~~~~~~~
social network到底研究什么的?20个包子,求解c++基础问题
包子酬谢,如何下载mitbbs 精华区C++ 初级再初级问题 (转载)
多个rar文件的解压Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)
[转载] Scheme 编程问题求教怎么找这个函数的源代码?
这个属于哪个领域[转载] LISP问题求教
请教c++一个程序bug,谢谢前辈们怎样把C文件编译成.x86后缀的目标代码? 怎样运行这种代码? (转载)
c++ type conversion 方面的问题Entity Extraction一般是用什么算法来实现呀?
相关话题的讨论汇总
话题: string话题: strcat话题: tempout话题: txt话题: userinput