C++入门 String 读写

1.从控制台 读入 用户输入的单个string

特征代码

string s;

cin>>s;

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter a string" << endl;
    cin >> s;
    cout << "You have entered : " << s << endl;
    system("pause");
    return 0;
}

2.从控制台 持续读入单个string 并进行字符串拼接

特征代码

while(cin>>s){}

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s, sNew;
    cout << "Please enter somestring" << endl;
    while (cin >> sNew)
    {
        s += sNew;
        cout << "You have entered : " << s << endl;
    }
    system("pause");
    return 0;
}

C++入门 String 读写

string读入的特点

1)从遇到的第一个不为空的字符串开始,即会忽略开头的空格

2)每遇到空格就停止本次读入

3)>>操作符返回读入的istream对象,即用户输入的内容,如果用户输入的内容不为空(达到文件为或遇到无效输入),那么会一直执行while循环

3.读取整行文本

getline(*in,string){}

作用:*in 输入流对象,如cin; 读入的字符串保存在string对象中

特点:1)遇到换行符即停止一次读入,即使开头就位换行符,那样的话,读入的字符串就为空

2)不会忽略开头的空格

返回值: 将不断读入的istream作为返回值,可以用于while的判断中(是否还有字符串输入)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter string" << endl;
    while (getline(cin, s))
    {
        cout << "You said:" << s<<endl;
    }
    system("pause");
    return 0;

C++入门 String 读写

3.string的长度

概念:string包含的字符有多少个 如 c 1 空格

语句:string s;

s.size(); 作用:返回s包含的字符个数

返回类型 string::sizy_type型

可以直接输出s.size()

也可以用一个string::size_type类型的变量接收s.size()

string::size_type是unsigned类型中的一员

示例程序:

1)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter the string:" << endl;
    cin >> s;
    cout << "You have entered: " << s << endl;
    cout << "The length of the string is: " << s.size()<< endl;
    system("pause");
    return 0;
}

C++入门 String 读写

2)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter the string:" << endl;
    cin >> s;
    string::size_type size = s.size();
    cout << "You have entered: " << s << endl;
    cout << "The length of the string is: " << size<< endl;
    system("pause");
    return 0;
}

注意 如果在s读入前就定义size=s.size();

则默认的size大小为0,读入后size也没有改变为字符串大小

?原因未知? 像这样:

3)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    string::size_type size = s.size();
    cout << "Please enter the string:" << endl;
    cin >> s;
    cout << "You have entered: " << s << endl;
    cout << "The length of the string is: " << size<< endl;
    system("pause");
    return 0;
}

C++入门 String 读写

4)string size 包括空格

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter the string:" << endl;
    getline(cin,s);
    cout << "You have entered: " << s << endl;
    cout << "The length of the string is: " << s.size()<< endl;
    system("pause");
    return 0;
}

C++入门 String 读写

用getline 开头的空格会被读入string , size里包括空格字符

4.读取字符串中的字符

途径:通过下标获取

下标数据类型: size_type

示例一:判断字符串的开头字母是什么(联系OpenGL Object文件读入时判断数据类型)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cout << "Please enter the string:" << endl;
    //string::size_type index;
    while (getline(cin, s))
    {
        cout << "You have entered: " << s << endl;

        if (s[0] == 'v')
            cout << "This data is a vertex " << endl;
        else
            if (s[0] == 'f')
                cout << "This data is a face" << endl;
            else
                cout << "Dont't konw what is this." << endl;
        cout << "Please enter the string:" << endl;

    }
    system("pause");
    return 0;
}

示例二:

数一数一个字符串里有多少个字符x

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    int num_x = 0;
    cout << "Please enter the string:" << endl;
    cin >> s;
    for (string::size_type i = 0; i < s.size(); i++)
        if (s[i] == 'x')
            num_x++; 
            cout << "There are " << num_x << " " x " in the string." << endl;

    system("pause");
    return 0;
}

原文链接: https://www.cnblogs.com/turningpoint/p/7118447.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/256326

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午9:58
下一篇 2023年2月14日 上午9:58

相关推荐