2010-07-09 12 views
6
int _tmain(int argc, char** argv) 
    { 
     FILE* file1=fopen(argv[1],"r"); 
     FILE* file2=fopen(argv[2],"w"); 
    } 

ऐसा लगता है कि केवल तर्कों का पहला अक्षर प्राप्त हुआ है ... मुझे नहीं मिलता है!मुख्य केवल तर्कों के पहले अक्षर प्राप्त करते हैं

std::cout<<"Opening "<<strlen(argv[1])<<" and writing to "<<strlen(argv[2])<<std::endl; 

आउटपुट 1 और 1 कोई फर्क नहीं पड़ता। (एमएसवीसी 2010 में)

+1

'_tmain' क्या है? आप किस पर्यावरण में काम कर रहे हैं? –

+0

इस प्रश्न में उत्तर देखें http://stackoverflow.com/questions/895827/what-is-the-difference-between-tmain-and-main-in-c –

+0

मुझे नहीं लगता कि यह एक डुप्लिकेट है। यह अलग-अलग वाक्यांश है, और आप पहले डेवलपर नहीं हैं जिन्हें मैंने इन लक्षणों पर ठोकर खाया है। इसलिए कम से कम इस फॉर्मूलेशन को आईएमएचओ रहना चाहिए। – EFraim

उत्तर

8

यह charwchar_t है जब आप UNICODE सेट के साथ संकलित कर रहे हैं।

इसे wmain के रूप में संकलित किया गया है। लिंकर बस ध्यान नहीं देता है कि एक अलग हस्ताक्षर है, क्योंकि यह "निर्यात सी" फ़ंक्शन है और इसका नाम इसमें तर्क तर्क नहीं है।

तो यह जा पूर्णांक _tmain (int argc, TCHAR ** argv)

चार में कनवर्ट कर रहा मुश्किल और नहीं हमेशा सही है चाहिए - Win32 प्रदान की समारोह केवल वर्तमान एएनएसआई कोड पृष्ठ पर सही ढंग से अनुवाद कर देगा।

आप अपने आवेदन internals में UTF-8 का उपयोग करना चाहते हैं तो आप कहीं और (जैसे Boost के रूप में) कनवर्टर के लिए देखने के लिए

+0

क्या आपको पता चलेगा कि चार में कैसे परिवर्तित करें? – Cenoc

+0

@Cenoc: http://stackoverflow.com/questions/159442/what-is-the-simplest-way-to-convert-char-to-from-tchar-in-c-cms –

+0

' चार 'बिल्कुल – Philipp

2

आपका तर्क स्ट्रिंग यूनिकोड के रूप में आ रहा है।

देखें इस question

0

विंडोज पर char डेटा प्रकार का उपयोग न करें, यह यूनिकोड समर्थन टूट जाता है। इसके बजाय "विस्तृत" फ़ंक्शंस का उपयोग करें। सी ++ में, सी के स्टडीओ से बचें, इसके बजाय फ़ाइल स्ट्रीम का उपयोग करें:

#include <cstdlib> 
#include <string> 
#include <fstream> 
int wmain(int argc, wchar_t** argv) { 
    if (argc <= 2) return EXIT_FAILURE; 
    const std::wstring arg1 = argv[1]; 
    const std::wstring arg2 = argv[2]; 
    std::ifstream file1(arg1.c_str()); 
    std::ofstream file2(arg2.c_str()); 
} 
संबंधित मुद्दे