
こんにちは。質問をさせてください。
---------------------------------------------------------------
address = "ここ$http://www.aaaaa.co.jp$moji=dddd$";
---------------------------------------------------------------
変数addressに格納された文字列で、
"http://"の1文字前に"$"があった場合は、
"$"を削除したいのですが、どのようにすれば
いいでしょうか?
※http://の前の"$"以外はそのまま残します。
No.1ベストアンサー
- 回答日時:
#include <iostream>
#include <string>
int main() {
std::string address = "ここ$http://www.aaaaa.co.jp$moji=dddd$";
std::string::size_type pos = address.find("$http://");
if ( pos != std::string::npos ) {
address.erase(pos,1);
}
std::cout << address << std::endl;
return 0;
}
No.3
- 回答日時:
いろいろやり方はあると思いますが
基本的なやり方として
こんな感じでどうでしょう?
#include <stdio.h>
int main()
{
int flag;
char *address = "ここ$http://www.aaaaa.co.jp$moji=dddd$";
char *wk;
for( wk=address , flag=0 ; *wk ; wk++){
if( *wk == '$' && flag == 0){
*wk = *(wk + 1);
flag = 1;
}
else if( flag == 1 ){
*wk = *(wk + 1);
}
}
printf("address = [ %s ] \n", address);
}
No.2
- 回答日時:
#1の方のはC++ですが、Cの方での考え方を書きます。
文字列の中で"$http://"を検索して、
存在しなければなにもしない。
存在すれば、一個ずつずらせばいいわけです。
つまり、文字列を、一個ずらして自分自身にコピーするわけです。
検索には標準関数strstr()を使います。(教科書を見てください)
ずらしてコピーするにはどうしたらいいかな…。
ただのコピーならstrcpy()という関数があるのですが、
こいつは「コピー元とコピー先が同じだった場合、未定義(プログラムとして問題あり)」という制限があります。
だからwhileかdo whileを使えばいいでしょう。
だいたいこんな感じになると思います。
(コンパイルはしてないので自信なしですが)
char *p;
p = strstr(data, "$http://");
if(p){
do{
*p = *(p+1);
}while(*(p+1));
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空ENTERの判別
-
なぜ、C++の標準ヘッダをインク...
-
enumの値から定義名を文字列化...
-
c++のvirtual関数および継承に...
-
std::map の const 修飾について
-
Haru PDF Library
-
JPEGやPNGが読めるLoadImage関数
-
VxWorks 6.4ソケット接続につい...
-
PICでダイナミック点灯 なぜか...
-
switch文のエラーについて
-
C++で、テキストファイルを一行...
-
std::wstringのメモリリークに...
-
最早開始時間と最遅完了時刻を...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
値差の%計算方法について
-
数字以外が入力されたらエラー...
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++で文字列から任意の文字を...
-
C++でShowCursorを使いたい。
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
VxWorks 6.4ソケット接続につい...
-
C++で、テキストファイルを一行...
-
switch文のエラーについて
-
_tcscat がうまくいきません(V...
-
C言語からgnuplot呼び出し
-
C言語のエラーを修正したい
-
std::map の const 修飾について
-
なぜ、C++の標準ヘッダをインク...
-
vc++の使い方について
-
gccでコンパイル時のエラー
-
このプログラミング誰か教えて...
-
STLでポインタのリストをsort()...
-
構造体配列のvectorへの変換と...
-
#defineの使い方について
-
#define中の#のエスケープ
-
リモートデスクトップの接続元I...
おすすめ情報