请大家帮我看一看这一小段程序错在什么地方!

mingpingzhang 2004-12-23 05:37:11
#include "stdafx.h"

int main()
{

TCHAR ch;
LPTSTR A="a";
LPTSTR B="B";
LPTSTR C=lstrcat(A,B);
std::cout<<C<<std::endl;
std::cin>>ch;


//std::cout<<GetDriveType("F:");

return 0;
}



刚学VC,却连一个字符串连接操作都搞不定,直让人伤心,灰心。
...全文
127 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
somedummy 2004-12-25
  • 打赏
  • 举报
回复
直接写std::string mystr=SourceStr;
这样的话会调用std::string::string(const char*),这样的话就可以通过C风格的字符串构造一个std::string对象了
mingpingzhang 2004-12-25
  • 打赏
  • 举报
回复
如果我使用std::string,请问如何将WIN32 API返回的LPSTR或LPTSTR转为std::string.
somedummy 2004-12-24
  • 打赏
  • 举报
回复
调用strcpy应该是这样的
strcpy(A,"Hello");
你不应该改变A的值,只要你一改变就有可能出错。
somedummy 2004-12-24
  • 打赏
  • 举报
回复
你还是搞错了,A="Hello"已经把A置为一个const char的指针了,你应该使用strcpy来向A里面写入字符串"Hello"

要不然你就要使用std::string,这个是C++里面标准的字符串(char*一族是C风格字符串的代表类型)。

不过对于std::string,原来的C风格的字符串函数就基本上都不能用了,不过可以使用C++标准库里面对string定义的一些重载的operator
mingpingzhang 2004-12-23
  • 打赏
  • 举报
回复
谢谢某人马甲
但是,设A,B两个都是较长的字符串,又该怎么进行
比如说:
#include <windows.h>
#include <iostream>
#include <tchar.h>

int main()
{

TCHAR ch;
LPTSTR A=new TCHAR[100];
A="Hello";
A[5]='\0';
LPTSTR B="B";
LPTSTR C=lstrcat(A,B);
std::cout<<C<<std::endl;
std::cin>>ch;


return 0;
}
依然出错,提示如下:
xxx.exe 中的 0x004323a1 处未处理的异常:0xC0000005: 写入位置 0x0048f0c1 时发生访问冲突 。

C语言的字符处理不会都这么麻烦吧?
somedummy 2004-12-23
  • 打赏
  • 举报
回复
是lstrcat的问题

strcat这一组函数(包括strcat、wcscat、lstrcat)需要用户来分配空间保证连接字符串可以进行的
你需要这样LPTSTR A=new TCHAR[100];
A[0]='A';A[1]='\0';
然后strcat就可以了
proinfor 2004-12-23
  • 打赏
  • 举报
回复
有#include"iostream.h"
mingpingzhang 2004-12-23
  • 打赏
  • 举报
回复
#include <windows.h>
#include <iostream>
#include <tchar.h>

int main()
{

TCHAR ch;
LPTSTR A="a";
LPTSTR B="B";
LPTSTR C=lstrcat(A,B);
std::cout<<C<<std::endl;
std::cin>>ch;


//std::cout<<GetDriveType("F:");

return 0;
}

还是出错,提示如下:

xxx.exe 中的 0x004656b0 处未处理的异常:0xC0000005: 读取位置 0x00000000 时发生访问冲突 。
somedummy 2004-12-23
  • 打赏
  • 举报
回复
TCHAR用来实现Unicode和ANSI字符转换的时候需要加入TChar.h才行
somedummy 2004-12-23
  • 打赏
  • 举报
回复
你只包含了stdafx.h,这个是给MFC应用程序用的,找到到LPTSTR这样的类型,TCHAR需要包含专用的头文件才行

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧