gpt4 book ai didi

c++ - 字符串指针语法,这是正确的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:01 25 4
gpt4 key购买 nike

我来自 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com