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

标签 c++ visual-c++ pointers syntax visual-c++-2008

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

相关文章:

c - 取消引用双指针并使用索引运算符

c - 在 C 语言中,赋值使指针来自整数,无需强制转换[默认启用]

C++虚继承区别

C++:提示需要多次输入数据才能继续

c - 随机数生成器代码修复(srand48/drand48 的替代方案)

c++ - 为什么互斥引用上的 lock_guard 会产生 C26110

C:将数据值读入结构

c++ - qmake运行时如何将变量传递给qmake项目文件

c++ - 改变常量指针的地址

c++ - MSVC编译器认为我正在引用已删除的函数,但据我所知,我不是