字符串的處理

字符數組

字符數組的定義與初始化html

char s[10];
char s[5] = { 'J','a','v','a' };

 

使用標準輸入輸出流,能夠將字符串一次性輸入或輸出java

char a[60];
cin >> a;
cout << a;

 

使用字符串輸入或輸出函數

gets_s函數

gets_s函數輸入一個字符串到字符數組s中。s是字符數組指向字符數組的指針,其長度應該足夠大,以便能容納輸入的字符串。ios

gets_s()函數讀取到\n(咱們輸入的回車)因而中止讀取,可是它不會把\n包含到字符串裏面去。然而,和它配合使用的puts函數,卻在輸出字符串的時候自動換行。c++

puts函數

puts函數輸出s字符串,遇到空字符結束,輸出完後在輸出一個換行('\n')。s是字符數組或指向字符數組的指針,返回值表示輸出字符的個數。數組

puts函數輸出的字符不包含空字符。函數

#include<iostream>
using namespace std;
int main() {
	char s[100];
	gets_s(s);
	puts(s);
	system("pause");
	return 0;
}

 

字符串處理函數

(1)字符串複製函數strcpy_s

#include<iostream>
using namespace std;
int main() {
	char s[100] = { 'j','a','v','a' };
	char a[5] = { 'c','+','+' };
	strcpy_s(s, a);   //用a替換s,輸出爲c++
	puts(s);
	system("pause");
	return 0;
}

strcpy_s函數兩個參數和三個參數spa

strcpy函數,就象gets函數同樣,它沒有方法來保證有效的緩衝區尺寸,因此它只能假定緩衝足夠大來容納要拷貝的字符串。在程序運行時,這將致使不可預料的行爲。用strcpy_s就能夠避免這些不可預料的行爲。
這個函數用兩個參數、三個參數均可以,只要能夠保證緩衝區大小。
三個參數時:
errno_t strcpy_s( 
char *strDestination
size_t numberOfElements, 
const char *strSource 
);
兩個參數時:
errno_t strcpy_s( 
char (&strDestination)[size]
const char *strSource 
);指針

例子:
#include<iostream>
#include<string.h>
using namespace std;

void Test(void)
{
char *str1=NULL;
str1=new char[20];
char str[7];
strcpy_s(str1,20,"hello world");//三個參數
strcpy_s(str,"hello");//兩個參數但若是:char *str=new char[7];會出錯:提示不支持兩個參數code

 

(2)字符串複製函數strncpy_s

#include<iostream>
using namespace std;
int main() {
	char s[100] = { 'j','a','v','a' };
	char a[5] = { 'c','+','+' };
	strncpy_s(s, a, 1);   //用a的第一個元素替換s,輸出爲c
	puts(s);
	system("pause");
	return 0;
}

(3)字符串鏈接函數strcat_s

#include<iostream>
using namespace std;
int main() {
	char s[100] = { 'j','a','v','a' };
	char a[5] = { 'c','+','+' };
	strcat_s(s, a);   //輸出爲javac++
	puts(s);
	system("pause");
	return 0;
}

(4)字符串鏈接函數strncat_s

#include<iostream>
using namespace std;
int main() {
	char s[100] = { 'j','a','v','a' };
	char a[5] = { 'c','+','+' };
	strncat_s(s, a, 2);   //將a的兩個元素接到s後面,輸出爲javac+
	puts(s);
	system("pause");
	return 0;
}

(5)字符串比較函數strcmp

int strcmp(char* s1, char* s2) htm

if (strcmp(str1, str2) == 0);  //比較兩個字符串是否相等

int strcmp(char* s1, char* s2) 
經過函數原型能夠看出 
接收兩個參數,也是字符串首地址, 
將s1和s2按字符的ASCII碼逐一進行大小比較 
若s1>s2,則函數返回值爲正數 
若s1=s2,則函數返回值爲0 
若s1<s2,則函數返回值爲負數 
值得一提的是: 
"abc"比"abbc"大 
"abc"比"abcd"小

(6)計算字符串長度函數strlen

#include<iostream>
using namespace std;
int main() {
	int n;
	n = strlen("Language");
	cout << n << endl;     //8
	char str1[8] = "abc def";
	cout << str1 << endl;  //輸出abc def
	puts(str1);            //輸出abc def
	cout<<strlen(str1);    //輸出7
	system("pause");
	return 0;
}

(7)字符串轉換成數值函數

#include<iostream>
using namespace std;
int main() {
	float a, b;
	a = atof("123.1");
	cout << a << endl;     //123.1
	b = atoi("123.1");
	cout << b << endl;     //123
	system("pause");
	return 0;
}

atof   浮點型

atoi  整型

atoll   /  atol

相關文章
相關標籤/搜索