1樓:匿名使用者
因為沒有加#include ,對string過載輸出流不被支援。以下兩者任選一種方式解決:
1.加上#include ;
2.把**按如下方式來改寫:
#include
#include
#include
using namespace std;
void main()
兩種方式都可以,隨便選一種。
2樓:曉晨之巔
因為你定義字串變數的型別string必須要包含庫檔案string,即加入#include 即可。
3樓:匿名使用者
#include
#include
#include
using namespace std;
int main()
我用的g++編譯。將void更改為int,並新增return 0;編譯執行通過。
4樓:匿名使用者
要使用string類,要先用#include把string標頭檔案包含進來。閣下的定義的字串變數
string a="asdfgh"; 的資料型別string型別;
5樓:匿名使用者
顯示字串常量:cout << "asdfgh";
顯示字串變數指標:cout << a;
顯示字串變數內容:cout << *a;
6樓:匿名使用者
輸出修改成這句
cout << a.data() << endl;
就可以了
7樓:來自修武
新增,因為在string中過載了輸出符號<<
8樓:匿名使用者
要加.h但是現在最好不要加了
9樓:
#include
#include
using namespace std;
void main()
10樓:侯家瑋
加上#include就好了。
11樓:匿名使用者
加上標頭檔案 #include問題就解決了。。
12樓:
main前面的void改成int
13樓:ylf塵風
這個程式裡面沒有輸出啊!你把源程式發過來咯
14樓:匿名使用者
出什麼錯?測試沒有問題啊
c++中定義char name[20]後,為什麼用printf("%s",name)就能輸出一連串字串?
15樓:匿名使用者
%s代表bai字串,name是字元陣列
的首地址du,也就是字串zhi的首地址。dao所以直接專輸出字串。
c++中定義屬char型陣列即是定義c風格字串。
格式化輸出函式printf第一個引數中%s代表可變引數部分中對應位置變數為指向字串地址的指標。
在c/c++中陣列的名是儲存該陣列首地址的常量。
需要注意:
(1)c++中定義內建型別區域性陣列變數,不提供預設初始化。這裡char是內建型別,如果不初始化其中儲存的是記憶體中的隨機數。
(2)c++不會對陣列進行越界檢查,而是將越界交給os,如果os檢測記憶體不可讀或寫,對齊進行讀寫os核心會丟擲中斷異常。
(3)c++中c-style字串讓然是以'\0'空字元為結束標誌。printf中的%s仍然會在輸出的時候從name指定的記憶體位置開始讀取資料再交給現存快取以在顯示器上顯示。不初始化或不以'\0'結尾的字串將輸出亂碼,這是如果越界讀取到了不可讀的記憶體,將會報段錯誤(unix核心)或記憶體不可讀(windows)異常以終端程式。
16樓:
%s的概念 就是輸出字串
字串必須要以'\0'結尾
也就是如果你
的name[20]中有一個位置是'\0'的話專printf("%s",name)就能正確輸出如果你是這樣屬char name[20]=;由於name陣列中沒有'\0'你對name指標用printf函式就會出錯
17樓:匿名使用者
%s是從起始位置輸出字元直到遇到\0為止,合法,
陣列在函式中做實參時會轉成指標。
18樓:匿名使用者
1,%s 是輸出字串;%c,只輸出單個字元。
2, 定義name是陣列,name表示陣列的第一個字元的地址
19樓:匿名使用者
陣列傳遞給printf函式當引數時,自動退化成指標,printf函式輸出指標指向空間,預設到'\0',結束,所以合法
20樓:wang非在心上
這個復就不需問為什麼啦!!因製為這是它的功能bai啦!!就像1+1為什麼等於du2了。你只需要zhi記住它的作用就是dao 用來輸出資料的!!
那個%s是格式識別符號啦!!就是規定後面的引數是以怎樣的格式輸出的!!另外還有其他幾種常用格式識別符號,%c、%d、%o
21樓:匿名使用者
printf函式本來就是c中的函式 。。
c++指標輸出字串前面為什麼沒有*
22樓:匿名使用者
這可能是c++發明者當初認為字元指標使用比較頻繁給它的特權吧,呵呵,其實沒有必要知道為什麼,知道怎麼用就可以,這種情況只有字串指標是特例
23樓:
char *a[2]=;
宣告裡的星號,表示a是指標,*a[2]表示a是指標陣列,陣列有兩個元素.
printf("%s \n %s",*a[1],*a[2]); -- 語法錯。
應當寫成:
printf("%s \n %s", a[0],a[1]);
%s -- 錯, 要用小寫 s
a[2] -- 下標超界,宣告2個指標,只能用 a[0],a[1];
printf %s 引數 a[0],a[1] 是兩個輸出字串的首地址。寫成 *a[1],*a[2] 就不知道是什麼了。
printf %c 引數 可以是 *a[0], *a[1],表示按ascii值列印單個ascii字元
printf("%c \n %c", *a[0], *a[1]);
24樓:匿名使用者
汗了,顯然不應該加上*的
舉個例子
char *s="abcd";
下面要輸出s
printf("%s ",?);
?的地方應該寫的是s,而不是*s;
字串即陣列,陣列即指標
換言之,s本質上是個指向字串"abcd"首地址的指標想要輸出整個字串,只要給格式符號匹配一個首地址的指標就好了,就是這裡的s
其實,*s的值是字元'a',也就是該字串第一個字元原因就是上面說的,s指向首地址,也就是a的地址,*s當然就是'a'了~
25樓:匿名使用者
"%s" 後面跟的是 char*型變數
c++輸出字串時出錯
26樓:浪子惟安
把toname方法改為
scanf("%s",&name[0]);
因為c++的string並不是和char*同樣的結構而且沒有返回值(你寫的返回值是string,嚴格的編譯器在這裡會報錯)
而且你用了c++,為啥不用cin>>name;
c++怎麼輸出字串變數
27樓:匿名使用者
暈,任意一個入門書上都有。
#include
#include
using namespace std;
int main()
28樓:匿名使用者
cout << "string_const" << endl; //字串常量輸出
string str ;
cin >> str;
cout << str << endl;
29樓:匿名使用者
方法1:
char str[100];
cin.getline(str, 100);
cout << str << endl;
方法2:
前面#include
using namespace std;
string s1;
getline(cin, s1);
cout << s1 << endl;
編寫一個c++程式,要求輸入一串字串,輸出裡面的字母,寫的程式**錯了?求高人指點
30樓:倉庫進水
你的 int series[100]; 用錯了,明明是字元怎麼用整型
c++指標指向字串變數後輸出指標為什麼錯誤?
31樓:匿名使用者
int main()
string s1="abc";
char *p=&s1[0];
cout 32樓:匿名使用者 因為字元陣列的陣列名就是常量指標,所以可以直接賦值給指標變數 string 是一個類,而類物件的首地址是不能賦值給 char 型別的指標的,二者型別不同,但你可以用下標運算子得到首字母的地址賦值,即 char *p=&s1[0] 的形式。 用cout輸出字串是可以的。大前提是當前名空間需要是std。即 中使用了 using namespace std 或者單獨宣告使用cout,即 中有 using std cout 否則需要使用 std cout進行輸出。在c 中有兩種字串的概念。1 string 類物件字串。需要使用std名空間,或... printf函式的一般格式 printf 格式控制字串,輸出表列 以圖1所示為例。圖1.函式引數包括兩部分 1 格式控制字串,是用雙引號括起來的字串,也稱為轉換控制字串,它指定輸出資料項的型別和格式。它包括兩種資訊 格式說明項 由 和格式字元組成,如 d,f等。格式說明總是由 字元開始,到格式字元終... string str console.readline 輸入字串 for int i str.length 1 i 0 i 把字串當字元陣列逆向迴圈 console.readline 暫停程式檢視結果所謂字串 實際上是一個字元陣列 char 所以直接用for逆向迴圈就行了 console.write...為什麼c 中無法用cout輸出字串
c語言怎麼用printf輸出字串
C一維陣列,用for語句反向輸出字串