こんにちは 目黒@C++学習中です
CComBSTR型の文字列の編集方法について教えて下さい。
既に代入済みのCComBSTR型の文字列を短くする方法がわかりません
以下はテストソースです。
sName = sName.m_str;の行を入れれば取あえず可能ですが
BoundsCheckerでエラーになります。
m_strをfreeしている為。
#スペースがトリムされてしまう、
#トリムを防ぐ方法があったら教えて下さい
#define UNICODE
#define _UNICODE
#include <windows.h>
#include <atlbase.h>
int main(void)
{
CComBSTR sName;
sName = L"012345789\\abc";
long lSize = sName.Length();
WCHAR* sP = ::StrRChr(sName,NULL,L'\\');
if (sP != NULL) {
*sP = 0;
lSize = sName.Length();
// sName = sName.m_str;
}
sName += L"efg";
return EXIT_SUCCESS;
}
No.1ベストアンサー
- 回答日時:
CComBSTRは直接編集はできないと思っています。
テストソースでは最終的にsNameが012345789efgになるようにしたいと言うことですよね。たとえば、sName = L"00\\efg"なら結果は"00efg"を期待しているのですね。
BSTRはNULLを突っ込んでも長さは変わりませんよね。
ちょっと助長かもしれませんが、もう一つCComBstrを使って結果を作成するのはいかがでしょうか?
if (sP != NULL) {
WORD size = sP - sName.m_str;
CComBSTR Tmp(size,sName);
sName.Empty();
sName = Tmp;
lSize = sName.Length();
}
sName += L"efg";
return EXIT_SUCCESS;
回答ありがとう
ポインターの演算を避けたいので
下記のようにしました
if (sP != NULL) {
*sP = 0;
CComBSTR sWork = sDirName.m_str;
sDirName = sWork;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空ENTERの判別
-
switch文のエラーについて
-
名前空間でビルドエラー(LNK20...
-
C++での <iostream.h>と<iostre...
-
C言語のポインターで詰まっている
-
c++で、cvMatからvectorへの変...
-
セグメンテーションフォルトが...
-
構造体に決められた文字列を入...
-
VC++で文字列から任意の文字を...
-
string型のフォーマット書式指...
-
VS2019でofstreamが未定義になる
-
2重の(?)の#include
-
指定した文字を削除したい
-
[Win + Eclipse + GCC]socketク...
-
c++のvirtual関数および継承に...
-
vectorの中にmap
-
構造体配列のvectorへの変換と...
-
なぜ、C++の標準ヘッダをインク...
-
VHDLのsignedとunsignedの違いは?
-
enumの値から定義名を文字列化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
enumの値から定義名を文字列化...
-
VC++で文字列から任意の文字を...
-
C言語 ストリームについて。
-
switch文のエラーについて
-
string型のフォーマット書式指...
-
構文エラーが出ているのですが...
-
空ENTERの判別
-
gccでコンパイル時のエラー
-
なぜ、C++の標準ヘッダをインク...
-
リモートデスクトップの接続元I...
-
JPEGやPNGが読めるLoadImage関数
-
mapの初期化
-
snprintfが使用できない。
-
atlbase.h と afxwin.hの同時定義
-
C言語のエラーを修正したい
-
CSting を TCHAR [] に変換した...
-
#include "fstream.h"
-
構造体配列のvectorへの変換と...
-
【C++】ヘッダ内でstringを格納...
-
CStringとString
おすすめ情報