请教c++中的string类的详细用法。

有个程序要实现字符串的处理问题,即输入zero + one + two =
这个时候要求输出答案,我知道用c的字符串数组可以处理,但我想用c++里面的string类来实现,请问该如何写?
问题一:先定义一个string a;
如果用cin>>a;这样的话遇到空格就停止了,如何才能接受一整行数据?
问题二:string类中有哪些方法适用于这个字符串提取?比如我要从”zero + one + two =“当中提取出zero one two等等
请详细说说其参数,在加个例子。谢谢了。。。
谢谢了,但还是想请问一下使用getline怎么总是要回车两次才可以啊?
我用的编译环境是vc6。。

问题一解答:
string str;
getline(cin,str);
问题二解答:
string类的find函数和substr函数可以帮助你。
比如
string line="zero+one+two";
line.find("zero")则返回在line中找到的第一个"zero"字符串在原字符串中所在的位置,如果不存在则返回string::npos
line.find("zero",n);<其中n是一个int型数>,则从下标为n的字母开始找,找到第一个"zero",返回"zero"字符串所在的位置。
则,想找到第5个"zero"字符串的方法:
int last=0;
for (int i=0;i<5;i++)
last=line.find("zero",last);
则last就是第五个"zero"的字母“z"所在的位置。
如果想得到哪个字符串出现的次数也很简单,你自己根据我上面说的编程实现吧。

如果不仅限于此题,substr也许也能用上,你自己在编译器里试试它吧,它的作用是利用下标截取字符串中的一部分字符串(一般先用find找到一些下标,再用substr取截取字符串)
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-02-22
第一个问题:
首先要包含<string>的头文件:#include<string>;
并且必须只能是#include<iostream>;切记不能加".h"!
而且要用using std::string;
其次,在main()中定义 string m_str;(这是全局变量)。
遇到空格就停止那你可以不打空格呀!“one+two=three”这个式子可以不用空格。如果非要接受整行数据就用字符串数组。或getline(),getline被来就需敲两下回车。
的二个问题:
可以用Find()函数在字符串中查找指定的字符或字符串,再用if语句判断然后做出结果。可以将find的返回值保存到一个变量中。
第2个回答  推荐于2016-03-27
第一个问题
getline(cin,a);
第二个问题
提取,这个...也就是说把符号去掉?

#include <string>
#include <iostream>
using namespace std;
bool findsymbol(char a);
int main()
{
string str;
string tmpstr;
getline(cin,str);
cout << str << endl;
int i = 0;
while(str[i] != '\0')
{
cout << "str[" << i << "] =" << str[i] << endl;
if(findsymbol(str[i]))//如果是符号,忽略,continue
{
++i;
continue;
}
else
{
tmpstr += str[i];//如果不是符号,就复制到临时string中
}
++i;
}
cout << tmpstr << endl;//最后输出的是临时的
system("pause");
return 0;
}

bool findsymbol(char str)
{
char symbol[5] ={'+','-','*','//','='};
for(int i = 0;i < 6; ++i)
{
if( str == symbol[i])
{
return true;
}
}
return false;
}

补充回答:
如果你需要两下回车才能结束输入,那么你试下这样用getline

getline(cin,str,'\n');本回答被提问者采纳
第3个回答  2010-02-20
C++中有String类吗??java中倒是有个功能强大的String类,C++中在MFC中倒是有一个CString的类定义。

C++ 语言中 String 的常见用法(三)
在C++语言中,String类提供了多种常用的方法,如erase、clear和substr,分别用于删除元素、清空数据以及获取子串。erase()方法用于删除String中的元素,分为两种用法:删除单个元素和删除区间内的所有元素。时间复杂度均为O(N)。当使用erase()删除单个元素时,需要提供一个迭代器it,表示要删除的元素位置。...

C++ 语言中 String 的常见用法(一)
是否可用printf输出string?答案是肯定的,通过c_str()将string转换为字符数组进行输出。输出结果为:2. 通过迭代器访问 虽然下标访问已足够常用,但某些函数如insert()和erase()需迭代器作为参数,因此了解string迭代器用法是必要的。迭代器可直接定义如下:通过*it可访问string中的每一元素。字符串支持直...

String类常见用法总结(C++)
String类在C++中的常用操作概述1. 构造函数: string a; - 默认构造 string a(b); - 拷贝构造 string a("abc"); - 初始化为字符串"abc" string a(n, 'c'); - 用n个'c'初始化 string a(cs, 3); - 用字符数组cs的前3个字符初始化 2. 赋值: - 重载等号运算...

C++ String类的详解
在C++中,String类是为了解决C语言字符串处理中的不足而设计的,它是一个泛型类,通过模板实例化提供了一套标准操作。尽管不是标准数据类型,但String类在处理字符串时更为便捷,尤其考虑到字符编码的多样性,如UTF-8等。String类提供了丰富的函数接口,包括访问字符串内容的两种方式:下标访问(通过[]...

c++头文件<string>简介
使用string头文件,程序员可以创建、操作和管理字符串对象,实现高效、简洁的字符串处理。通过其中的函数,可以对字符串进行拼接、分割、查找、替换等操作,从而简化了复杂的字符串处理任务。例如,使用string头文件中的std::string类,可以轻松地创建字符串对象,并利用该类提供的成员函数如append、insert、...

[详解-字符串] C++必知必会 字符串-string常用各种操作解析
在C++编程中,字符串-string这个数据类型是处理文本数据的关键,string类的丰富操作功能使其在文本处理中不可或缺。本文将详细解析C++中string类的常用操作:1. 首先,你需要在代码中包含`#include `头文件。2. 定义字符串时,可以直接使用`std::string str = "初始值"`的方式。3. 获得字符串长度的...

c++ string类的常用方法有哪些?
1、定义和构造初始化string 提供了很多构造函数,可以以多种方式来初始化string字符串。2、赋值,拼接字符串string重载了 = + += 等多种运算符,让字符串组合拼接更简单。3、访问字符操作string可以按数组方式,以下标来访问。还可以用at()函数访问指定的字符。4、可以使用 STL 的接口可以把 string ...

C++string的用法问题,不知道为什么用不了string类型
因为 string 是 std命名空间下的,就和cout 一样..所以 修改的方法有两个..1 加 命名空间 限定 std::string name;2 使用 using using std::string;

C++中string怎么用?麻烦大神给个详细的解答!
首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下: #include <string> \/\/注意这里不是string.h string.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单: string Str;这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,...

C++string类中有哪些功能的函数?语法分别是怎么样的?
1.声明一个C++字符串 声明一个字符串变量很简单:string Str;这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:a) ...

相似回答