我来自 C# 背景,我的 C++ 很生疏,所以请多多包涵。
以下函数定义接受指向表示输入文件名 (szIn) 和输出文件名 (szOut) 的字符串的指针 (LPTSTR)。这是函数原型(prototype):
ConvertFile(LPTSTR szIn, LPTSTR szOut);
目前该函数是从一些 UI 代码中执行的,下面是一个如何从指针 szOutput
获取输出文件名的示例:
TCHAR szOutput[255]; // output filename
if (g_szFilename[0] != 0)
{
SetDlgItemText(hMainDlg, IDC_EDIT_INPUT, g_szFilename);
_tcscpy(szOutput, g_szFilename);
TCHAR * szExt = _tcsrchr(szOutput, '.');
if (szExt != NULL) *szExt = 0;
_tcscat(szOutput, _T(".png"));
}
我想按照这些思路做一些事情:
TCHAR inputFilename[256];
TCHAR outputFilename[256];
inputFilename += "somefile.txt";
outputFilename += "someotherfile.txt";
char *inputPtr;
char *outputPtr;
inputPtr = inputFilename;
outputPtr = outputFilename;
ConvertFile(inputPtr, outputPtr);
对于 Visual Studio 2008 中 Microsoft 的 C++ 风格,这是正确的语法吗?
最佳答案
没有。 C++ 字符串可以做你想做的事:
// Since we don't know whether to use string or wstring, we're stuck
// with basic_string<TCHAR>
std::basic_string<TCHAR> inputFilename, outputFilename;
// Note the TEXT macro...it makes sure your chars are TCHARs
inputFilename += TEXT("somefile.txt");
outputFilename += TEXT("someotherfile.txt");
// basic_string::c_str() returns you a pointer suitable for C stuff
// (since this is a string of TCHARs, we'll get a const TCHAR* back)
ConvertFile(inputFilename.c_str(), outputFilename.c_str());
C 字符数组不能像那样连接。您必须使用 _tcscat
或其他类似函数。
关于c++ - 字符串指针语法,这是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103728/