- 读入字符串:
1.scanf()读入char[] *****************用这个***********************
char str[1024];
scanf("%[^\n]",&str);
getchar();
2.gets()读入char[] !!!!!PAT里面使用gets会报错!!!!!!!
char str[1024];
gets(str);
gets_s(str); // VS
3.getline()读入string或char[]
#include <iostream>
#include <string>
using namespace std;
string str;
getline(cin,str);//读入string
//
char str2[1024];
cin.getline(str2,1024);//读入char数组
scanf 与 getline连用时,注意需要使用getchar读入换行符
4.cin 读入 string
//例如输入数据是不确定个数的一行(用空格隔开) //数据(关键词) :test code debug sort keywords
while (cin >> keyword) {
//mpKeywords[keyword].insert(id);
char c = getchar();
if (c == '\n') break;
}
参考:https://www.cnblogs.com/AlvinZH/p/6798023.html
5.gets 和 scanf 的区别
gets()函数用来接收输入的字符串,而scanf()可以接收多种格式的数据。两个函数遇到回车符都会认为是输入结束,但是gets()可以接收空格,但是scanf()则不行。例如
char char_array[20] = {0};
scanf(“%s”, char_array);
此时,在控制台中输入“Hello World”时,char_array的值是Hello。而
char char_array[20] = {0};
gets(char_array);
此时,在控制台中输入“Hello World”时,char_array的值是Hello World。
- 输出
1.输出char[]
printf("%s", str);
2.输出string 因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的。
printf("%s", str.c_str());
-------------------------------------------------------
- string.h中常用函数:
1.长度
1)char[]
#include <string.h>
strlen(char[]);
2)string
#include <string>
using namespace std;
string.length();
string.size();
2.复制
1)char[]
strcpy(c, "aaa"); //<string.h>
strcat(char *destin, char *source); // 连接
2) string
string = "aaa";
3.比较
1)string可以用>直接比较,相当于strcmp 字符串可以用 + 直接连接
2)char[] 使用 strcmp(str1, str2),两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
不能使用string类型,需要用char[]。可以用string.c_str()进行转换。
string str1 = "asdf";
string str2 = "qwer";
strcmp(str1.c_str(), str2.c_str());//要用c_str()
---------------------------------------------------------
- string中常用函数
1.insert()
①insert(pos, string); insert(3, "sss");
②insert(it, it1, it2); insert(s1.begin() + 3, s2.begin() + 2, s2.end()); // 将s2的部分加入到s1
s.append("aa"); // append
s = s + c; // c是char类型,写成 s += c 就错了
2.erase()
①earse(it) 单个元素
erase(str.begin() + 4);
②erase 区间
第一种:erase(begin, end)
erase(str.begin() + 2, str.end() - 1);
第二种:erase(pos, length)
erase(3, 2);
3.substr(pos, lenth)
substr(5, 3);
4.find()
str.find(str2); //str2是str的子串
str.find(str2, pos); // pos 是开始匹配的位置
5.replace()
str.replace(pos, len, str2) ; //把str从pos号位开始长度为len的子串替换为str2
str.replace(it1, it2, str2); //把str的迭代器[it1, it2) 范围的子串替换为str2
------------------------------------------------------------------
- 头文件的区别
1.cstring 和string.h对应,c++版本的头文件,包含比如strcpy之类的字符串处理函数
#include <cstring> //不可以定义string s;可以用到strcpy等函数
using namespace std;
2.string 包含std::string的定义,属于STL范畴
#include <string> //可以定义string s;可以用到strcpy等函数
using namesapce std;
3.string.h 和cstring对应,c版本的头文件,包含比如strcpy之类的字符串处理函数
#include <string.h> //不可以定义string s;可以用到strcpy等函数