亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C+中的_tmain()和main()有什么區別?

C+中的_tmain()和main()有什么區別?

C++
躍然一笑 2019-07-05 12:25:59
C+中的_tmain()和main()有什么區別?如果我使用以下main()方法運行我的C+應用程序,一切正常:int main(int argc, char *argv[]) {    cout << "There are " << argc << " arguments:" << endl;    // Loop through each argument and print its number and value    for (int i=0; i<argc; i++)       cout << i << " " << argv[i] << endl;    return 0;}我得到了我所期望的,我的論點被打印出來了。但是,如果我使用_tmain:int _tmain(int argc, char *argv[]) {    cout << "There are " << argc << " arguments:" << endl;    // Loop through each argument and print its number and value    for (int i=0; i<argc; i++)       cout << i << " " << argv[i] << endl;    return 0;}它只顯示每個參數的第一個字符。造成這種情況的原因是什么?
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

_tmain是一個宏,它根據是否使用Unicode或ASCII編譯而重新定義。它是Microsoft的擴展,不能保證在任何其他編譯器上都能工作。

正確的聲明是

 int _tmain(int argc, _TCHAR *argv[])

如果定義了宏unicode,則擴展為

int wmain(int argc, wchar_t *argv[])

否則它會擴展到

int main(int argc, char *argv[])

您的定義每一個都有一點,并且(如果您定義了Unicode)將擴展到

 int wmain(int argc, char *argv[])

這完全是錯誤的。

cout適用于ASCII字符。如果您使用的是寬字符,則需要std:wcout。

試試這樣的東西

#include <iostream>#include <tchar.h>#if defined(UNICODE)
    #define _tcout std::wcout#else
    #define _tcout std::cout#endifint _tmain(int argc, _TCHAR *argv[]) {
   _tcout << _T("There are ") << argc << _T(" arguments:") << std::endl;

   // Loop through each argument and print its number and value
   for (int i=0; i<argc; i++)
      _tcout << i << _T(" ") << argv[i] << std::endl;

   return 0;}

或者您可以預先決定是使用寬字符還是窄字符。*-)



查看完整回答
反對 回復 2019-07-05
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

_T約定用于指示程序應該使用為應用程序定義的字符集(Unicode、ASCII、MBCS等)??梢杂胈T()包圍字符串,使它們以正確的格式存儲。

 cout << _T( "There are " ) << argc << _T( " arguments:" ) << endl;


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 915 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號