字符串读入:
C语言:
包含头文件+定义:
include <cstring>
typedef char ch[LEN];
ch SArray[3];
char STRING[LEN];
char* STRING2;
读入(遇到空格则停止):
scanf("%s",STRING); Len=strlen(STRING);
从STRING[1]开始记录(遇到空格则停止):
scanf("%s",STRING+1); Len=strlen(STRING+1);
整行读入:
gets(STRING);
还可以自己编写读入,能按需求调整记录位置,但是耗时较高:
void readstr(char* s)
{
Len=0;
char c; c=getchar();
while (1)
{
if (c=='\n') break;
s[++Len]=c;
c=getchar();
}
}
C++语言:
包含头文件+定义:
#include <string>
string s("string");
string s(n,char);
求字符串长函数:
C语言中 strlen(s)求长原理是从起始位置起逐位比较,直到探测出字符串终止符(’\0’)。 其时间复杂度为O(n)
若字符串没有变化,最好不要重复调用,应该用变量储存起来。
C++中 s.size() 原理相似。
C++ STRING中其他函数:
s.append("string");
s.substr(POS,LEN);
getline(cin,STRING);
s.find(SUBSTRING);
s.replace(START,LEN,RESTRING);
{ s.erase(START,LEN);s.insert(START,RESTRING); }
s.compare(t);
C++ stringstream 用法:
包含头文件+定义:
#include<sstream>
stringstream Tempio;
接着就可以像cin、cout一样输入输出,可用于暂存信息,或进行数据类型之间的转换。
template<class TA,class TB>
TB AtoB(const TA &a)
{
stringstream st;
st<<a;
TB b;
st>>b;
return b;
}
int y=123;
string s1=AtoB<int,string>(y);
string s2("321");
int z=AtoB<string,int>(s2);
其他
有的函数不支持C++的string类型,如printf、system、文件的open等。使用时需要用c_str()转成C风格的字符串。 注意: c_str()返回值为const char* (不可改), 不要用c_str()读入string类型
ofstream fout;
string filename="test";
fout.open((filename+".in").c_str());
...
fout.close();
string s="c++string";
printf("%s",s.c_str());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)